package com.xiaoxu.intranetweb.util.excel.strategy;

import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;

import java.util.List;

public class CustomCellWriteStrategy implements CellWriteHandler {

    @Override
    public int order() {
        return 1000000;
    }
    @Override
    public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
//        log.info("第{}行每{}列！" , cell.getRowIndex(), cell.getColumnIndex());
//        workbook.createCellStyle().cloneStyleFrom(cellStyle);
        //根据校验结果设置单元格文字颜色
        if(cell.getRowIndex() == 0){
            Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
            CellStyle cellStyle = workbook.createCellStyle();
            cellStyle.cloneStyleFrom(cell.getCellStyle());
                    //设置单元格背景色
//            cellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
            Font font = workbook.createFont();
            font.setFontName("宋体");
            font.setFontHeightInPoints((short) 24);
            font.setBold(true);
            cellStyle.setFont(font);
            cell.setCellStyle(cellStyle);
            // 设置行高
//            Row row = cell.getRow();
//            if (row != null) {
////                System.out.println(row);
//                row.setHeightInPoints((float) 50.0); // 设置行高为36磅
//            }
        }
        if(cell.getRowIndex() == 28){
            Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
            CellStyle cellStyle = workbook.createCellStyle();
            cellStyle.cloneStyleFrom(cell.getCellStyle());
            //设置单元格背景色
//            cellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
            Font font = workbook.createFont();
            font.setFontName("宋体");
            font.setFontHeightInPoints((short) 12);
            font.setBold(true);
            cellStyle.setFont(font);
            cell.setCellStyle(cellStyle);
        }
        if(cell.getRowIndex() == 29 && cell.getColumnIndex()<20){
            Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
            CellStyle cellStyle = workbook.createCellStyle();
//            cellStyle.cloneStyleFrom(cell.getCellStyle());
//            cellStyle.setBorderBottom(BorderStyle.NONE);
//            cellStyle.setBorderTop(BorderStyle.NONE);
//            cellStyle.setBorderLeft(BorderStyle.NONE);
//            cellStyle.setBorderRight(BorderStyle.NONE);
            cell.setCellStyle(cellStyle);
        }
        if (cell.getRowIndex() == 29 && cell.getColumnIndex()>=20){
            Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
            CellStyle cellStyle = workbook.createCellStyle();
            cellStyle.cloneStyleFrom(cell.getCellStyle());
            //设置单元格背景色
//            cellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
            Font font = workbook.createFont();
            font.setFontName("宋体");
            font.setFontHeightInPoints((short) 16);
            font.setBold(true);
            cellStyle.setFont(font);
            cell.setCellStyle(cellStyle);
        }
    }

    // 在单元格处理之后执行
//    @Override
//    public void afterCellDispose(CellWriteHandlerContext context) {
//        Cell cell = context.getCell();
//        int rowIndex = cell.getRowIndex();
//        int cellIndex = cell.getColumnIndex();
//
//        if (rowIndex == 0){
//
//        }
//
//        // 自定义样式处理
//        // 当前事件会在 数据设置到poi的cell里面才会回调
//        // 判断不是头的情况 如果是fill 的情况 这里会==null 所以用not true
//        CellStyle cellStyle = null;
//        // 拿到poi的workbook
//        Workbook workbook = context.getWriteWorkbookHolder().getWorkbook();
//        // 这里能复用的地方缓存起来 一个表格最多创建6W个样式
//        // 不同单元格传同一个cellStyle
//        cellStyle = workbook.createCellStyle();
//        cellStyle.setBorderBottom(BorderStyle.THIN);
//        cellStyle.setBorderTop(BorderStyle.THIN);
//        cellStyle.setBorderLeft(BorderStyle.THIN);
//        cellStyle.setBorderRight(BorderStyle.THIN);
//        cellStyle.setAlignment(HorizontalAlignment.CENTER);
//        Font font = workbook.createFont();
//        font.setColor(Font.COLOR_RED);
//        font.setFontHeightInPoints((short) 24);
//        cellStyle.setFont(font);
//        cell.setCellStyle(cellStyle);
//                // 由于这里没有指定dataformat 最后展示的数据 格式可能会不太正确
//                // 这里要把 WriteCellData的样式清空， 不然后面还有一个拦截器 FillStyleCellWriteHandler 默认会将 WriteCellStyle 设置到
//                // cell里面去 会导致自己设置的不一样
//                context.getFirstCellData().setWriteCellStyle(null);
//            }
//        }

}

